package com.itheima.innerclass3;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Demo {

    public static void main(String[] args) {

        //匿名内部类的使用场景：
        //调用别人提供的方法实现需求，这个方法正好可以让我们传输一个匿名内部类对象给其使用

        //创建一个登录窗口，窗口中只有一个登录按钮
        JFrame win = new JFrame("登录窗口");
        win.setSize(300, 200);
        win.setLocationRelativeTo(null);
        win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        win.add(panel);

        JButton btn = new JButton("登录");
        panel.add(btn);

        /*btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("登录成功！");
            }
        });*/

        //Lambda表达式
        btn.addActionListener((ActionEvent e) -> {
            System.out.println("登录成功！");
        });

        //Lambda表达式的简化
        //1.参数类型可以全部省略不写
        btn.addActionListener((e) -> {
            System.out.println("登录成功！");
        });

        //2.如果Lambda表达式的参数列表只有一个参数，那么参数列表的括号可以省略不写
        btn.addActionListener(e -> {
            System.out.println("登录成功！");
        });

        //3.如果Lambda表达式的代码块只有一行代码，那么大括号和分号可以省略不写；
        // 如果这行代码是return语句，那么return关键字可以省略不写
        btn.addActionListener(e -> System.out.println("登录成功！"));

        win.setVisible(true);


    }
}
